package br.com.funaction.eventtcontrollerv2.controller;

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import br.com.funaction.eventtcontrollerv2.entities.ControleCaixa;
import br.com.funaction.eventtcontrollerv2.entities.Franquia;
import br.com.funaction.eventtcontrollerv2.model.ControleCaixaDAO;

@ManagedBean
public class ControleCaixaMB {
	
	private ControleCaixa controleCaixa = new ControleCaixa();
	private ControleCaixaDAO dao = new ControleCaixaDAO();
	private int idFranquia;
	private Franquia franquia = new Franquia();
	private FacesContext contexto = FacesContext.getCurrentInstance();
	private List<ControleCaixa> listControleCaixa;
	
	@PostConstruct
	public void init(){
		
		try{
			
			autenticacao();
			
		} catch(Exception e){
			
			this.idFranquia = 1;
		}
		
		try{
			
			showAll();
			
		} catch(Exception e){
			
		}
	}
	
	private void autenticacao() throws IOException{
		
		franquia = (Franquia) contexto.getExternalContext().getSessionMap().get("franquia");
		if(franquia == null){
			
			ExternalContext contextoExterno = contexto.getExternalContext();
			contextoExterno.redirect("/eventt-controller-v2/jsf/login/login.jsf");
			return;
		}
		
		this.idFranquia = franquia.getId();
	}
	
	public void add() throws SQLException{
		
		try{
			
			controleCaixa.setIdFranquia(idFranquia);
			dao.add(controleCaixa);
			
			ExternalContext contextoExterno = contexto.getExternalContext();
			contextoExterno.redirect("/eventt-controller-v2/jsf/controleCaixa/visControleCaixa.jsf");
			
		} catch(Exception e){
			
			contexto.addMessage(null, new FacesMessage("Ops!", "Algo aconteceu. Favor contatar o administrador do sistema."));
		}
	}
	
	public void showAll() throws SQLException{
		
		listControleCaixa =  dao.showAll(idFranquia);
	}
	
	public ControleCaixa getControleCaixa() {
		return controleCaixa;
	}

	public void setControleCaixa(ControleCaixa controleCaixa) {
		this.controleCaixa = controleCaixa;
	}

	public List<ControleCaixa> getListControleCaixa() {
		return listControleCaixa;
	}

	public void setListControleCaixa(List<ControleCaixa> listControleCaixa) {
		this.listControleCaixa = listControleCaixa;
	}

}